#ifndef TRANSFERBUNDLEINTERFACE_H_
#define TRANSFERBUNDLEINTERFACE_H_

#include <boost/shared_ptr.hpp>
using boost::shared_ptr;


class FileInfo;

class TransferBundle
{
public:
    virtual string get_tag() const = 0;
    virtual shared_ptr<FileInfo> get_next_file() = 0;

    virtual void on_transfer_started(shared_ptr<FileInfo> file) = 0;
    virtual void on_transfer_finished(shared_ptr<FileInfo> file) = 0;
    virtual void on_transfer_canceled(shared_ptr<FileInfo> file) = 0;

    virtual shared_ptr<FileInfo> on_incoming_transfer(shared_ptr<FileInfo> file) = 0;

    virtual void on_enabled() = 0;
    virtual void on_disabled() = 0;

    virtual ~TransferBundle() {}
};

typedef boost::shared_ptr<TransferBundle> TransferBundlePtr;

#endif /* TRANSFERBUNDLEINTERFACE_H_ */
